#include <curl/curl.h>
#include <cjson/cJSON.h>

// 回调函数
size_t writeCallback(void *contents, size_t size, size_t nmemb, void *userp) {
    size_t realsize = size * nmemb;
    // 这里可以处理获取到的数据，比如存储到文件或者其他操作
    char * result = (char *)contents;

    // result就是url地址响应回来的一个信息，这个信息一般都是一个json格式的字符串
    // 所以这个地方要利用cJSONqu解析json字符串
    cJSON* root = cJSON_Parse(result);  // 将json字符串转成json对象
    if(root != NULL)
    {
        cJSON* successJson = cJSON_GetObjectItemCaseSensitive(root,"success");
        cJSON* codeJson = cJSON_GetObjectItemCaseSensitive(root,"code");
        cJSON* messageJson = cJSON_GetObjectItemCaseSensitive(root,"message");

        printf("success=%d,code=%d,message=%s\n",successJson->valueint,codeJson->valueint,messageJson->valuestring);
    }

    printf("%s\n",result);
    return realsize;
}

int main(int argc, char const *argv[])
{
    // 1 初始化curl，得到一个CURL对象
    CURL *curl = curl_easy_init();
    if(curl)
    {
        // 2 做请求配置，设置url路径 设置回调函数
        curl_easy_setopt(curl,CURLOPT_URL,"http://47.109.65.208/config.json");
        curl_easy_setopt(curl,CURLOPT_WRITEFUNCTION,writeCallback);

        // 3 发起请求
        CURLcode code = curl_easy_perform(curl);
        if(code != CURLE_OK)
        {
            fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(code));
        }

        // 4 清理curl对象
        curl_easy_cleanup(curl);
    }

    return 0;
}
